//导入axios
import axios from 'axios'
import Vue from 'vue'
axios.defaults.baseURL = 'http://ttapi.research.itcast.cn'

import router from '../router/'
import JSONbig from "json-bigint"

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // console.log(config)
  // 判断是否为登录的请求
  if (config.url.indexOf('authorizations') != -1) {

    // 如果是登录，直接发这个请求就行了
    return config;
  }

  let user;
  try {

    // 这里拿到本地存储的token
    user = JSON.parse(window.localStorage.getItem('userInfo'))

    // 如果为空，代表没登录
    // console.log(user)
    if (!user) {
      
      
      Vue.prototype.$message.error('请先登录')
      //直接打回登录页
      router.push('/login')
      // return;
    } else {
      config.headers.Authorization = `Bearer ${user.token}`

    }

  } catch (error) {

    //能来到这，代表你有数据，但是你的数据不是json格式

    Vue.prototype.$message.error('请先登录')
    router.push('/login')
    // return;
  }


  return config; 

}, function (error) {

  return Promise.reject(error);
});

axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response;
}, function (error) {
  console.dir(error);
  
  if(error.response.status == 401){
    router.push('/login')
  }
  // 对响应错误做点什么
  // return Promise.reject(error);
});





//防止精度丢失 使用jsonBIg
axios.defaults.transformResponse = [
  function (data) {
    try {
      return JSONbig.parse(data)
    } catch (error) {
      return data
    }
  }
]

export default axios